package proto

type LoginReq struct {
	Passwd string `form:"passwd"`
}
type TestReq struct {
	Uid  string `form:"uid"`
	Addr string `form:"addr"`
}

type StartReq struct {
	Duration int    `form:"duration"`
	Rate     int    `form:"rate"`
	Limit    int    `form:"limit"`
	Addr     string `form:"addr"`
}

type StopReq struct {
	Isp string `form:"isp"`
}

type StopOneReq struct {
	Uid string `form:"uid"`
}

type PauseReq struct {
	Isp string `form:"isp"`
}

type ResumeReq struct {
	Isp string `form:"isp"`
}

type GetUidByIpReq struct {
	Ip string `form:"ip"`
}

type AddTaskReq struct {
	Isp           string `form:"isp"`
	ExIncProvince string `form:"exIncProvince"` // 指定排除省份
	RunDuration   int64  `form:"runDuration"`   // 0:永久运行 >0:运行指定时长(单位:分钟)
	RunRate       int    `form:"runRate"`       // 速率限制(单位:Kb/s)
	RunCycle      int    `form:"runCycle"`      // 0:运行一次 1:重复运行
	RunTimeHour   int    `form:"runTimeHour"`   // 开始运行时刻(小时)
	RunTimeMinute int    `form:"runTimeMinute"` // 开始运行时刻(分钟)
	RunTimeSecond int    `form:"runTimeSecond"` // 开始运行时刻(秒)
	V4Enabled     int    `form:"v4Enabled"`     // 使用IPv4网络
	V6Enabled     int    `form:"v6Enabled"`     // 使用IPv6网络
}

type ContainerReq struct {
	Timestamp     int64  `json:"ts"`
	InterfaceName string `json:"interface_name"`
	ContainerIp   string `json:"container_ip"`
	V6Addr        bool   `json:"v6_addr"`
	TcpDown       int64  `json:"tcp_down"`  // 单位:bps
	UdpDown       int64  `json:"udp_down"`  // 单位:bps
	HttpDown      int64  `json:"http_down"` // 单位:bps
	Down          uint64 `json:"down"`      // 单位:bps
	TcpPorts      []int  `json:"tcp_ports"`
	UdpPorts      []int  `json:"udp_ports"`
	HttpPorts     []int  `json:"http_ports"`
}

type ContainerInfo struct {
	MaxDown int64 `json:"max_down"` // 单位:bps
	ContainerReq
}

type ExchangeReq struct {
	Timestamp       int64    `json:"ts"`
	MachineId       string   `json:"machine_id"`
	MonitorIp       string   `json:"monitor_ip"`
	Isp             string   `json:"isp"`
	InfoUrl         string   `json:"info_url"`          // 信息地址
	DownUrl         string   `json:"down_url"`          // 下载地址
	ProveV6Url      string   `json:"prove_v6_url"`      // v6探测地址
	DownTotal       uint64   `json:"down_total"`        // 单位:bps
	DownTotalV4     uint64   `json:"down_total_v4"`     // 单位:bps
	DownTotalV6     uint64   `json:"down_total_v6"`     // 单位:bps
	MaxDownTotal    int64    `json:"max_down_total"`    // 单位:bps
	MaxDownTotalV4  int64    `json:"max_down_total_v4"` // 单位:bps
	MaxDownTotalV6  int64    `json:"max_down_total_v6"` // 单位:bps
	TcpProportion   int64    `json:"tcp_proportion"`
	UdpProportion   int64    `json:"udp_proportion"`
	HttpProportion  int64    `json:"http_proportion"`
	DeltaProportion int64    `json:"delta_proportion"`
	OnlineV4Count   int64    `json:"online_v4_count"`
	OnlineV6Count   int64    `json:"online_v6_count"`
	ExpiredV4       []string `json:"expired_v4"`
	ExpiredV6       []string `json:"expired_v6"`
}
